1. Field of the Invention
The invention relates to peripheral devices, and more particularly, to a method of emulating peripheral devices to allow for the development of device drivers before availability of the peripheral devices.
2. Description of the Related Art
Historically, computer systems have developed as single microprocessor, sequential machines which process one instruction at a time. However, performance limits are being reached in single microprocessor computer systems. As a result, multiprocessor computer systems comprising multiple microprocessors are developed that work in parallel on different tasks or different parts of a task. The multiple microprocessors are typically connected via a host bus. Also, an expansion bus for connection to peripheral devices is typically connected to the host bus through an interface. Because of the increased performance demands, peripheral devices often include a bus master, which can directly communicate with the memory of the computer system, freeing the system microprocessors up for other activities.
An operating system executes on the various microprocessors, and serves as the interface between the various application programs and the hardware of the computer system. The operating system communicates with the various peripheral devices via I/O control programs referred to as device drivers. A device driver acts as an interface between the operating system and the corresponding peripheral device. The device driver provides control commands to activate the peripheral device and to check the device status to determine when it is ready for a data transfer. The device driver also performs error checking when transfers are occurring to ensure that the transfer has completed successfully. Further, the device driver responds when the peripheral device indicates completion of the control commands.
To write a device driver program, a detailed knowledge of the peripheral device is required. Consequently, device drivers are typically provided by manufacturers of the peripheral device. In many instances, the actual peripheral device hardware may not be available while the device driver is being developed by the manufacturer. As a result, actual testing and any debugging changes that need to be made must wait until the actual hardware becomes available. This increases the development time for the device driver, and as a result, the peripheral device, thereby delaying the availability of the new peripheral device. If a large portion of the device driver testing and debugging could occur without the need for the actual peripheral device hardware, the overall time to develop a peripheral device would be decreased, resulting in more rapid computer system improvement. It is further desirable that this testing be performed under conditions close to those present if the peripheral device were present. It may be possible to develop emulators to simulate peripheral device operation, but the emulator would operate on the same microprocessor as the device driver, thus providing a highly artificial environment which provides little testing of numerous portions of device driver operation, such as multitasking, multi-threading, and real time operation.